Computer services are often provided to users by remote servers “in the cloud” under a cloud computing model. Under cloud computing, shared servers provide computing resources such as software and data to multiple remote computing devices on demand, like electricity from the grid. These services are frequently accessed through web-based tools or applications that can be run as if they were installed locally (e.g., through a web browser). On the provider end, most cloud computing infrastructures consist of services delivered through common centers and built on servers. A cloud computing infrastructure is a network of servers and other resources configured to provide a given service or set of services according to a cloud model. Smaller service providing networks can also be configured to provide services remotely on a smaller scale.
Servers are often interconnected, with one server leveraging services provided by other servers within the service providing network. In other words, servers often have dependencies on other servers. For example a server providing a web service to host files may physically store the actual files on a separate server. Such dependencies between servers can be nested multiple levels deep.
A service providing network such as a cloud computing infrastructure can consume a great deal of energy. The servers and other computing devices comprising the network use a significant amount of electricity, and keeping them powered on and ready to provide services 24 hours a day is not trivial. Contemporary computing devices typically support limited power consumption states (e.g., so called sleep or hibernation modes). By configuring servers to be in such limited power consumption states at least some of the time (e.g., after not having received a service request for a given amount of time, during off peak hours, etc.) can save a significant amount of power. Because these servers have to be available to provide services on demand at all times, the service providing network must be able to wake up its internal servers from limited power consumption states when their services are demanded.
Wake-on-LAN (WoL) is an Ethernet computer networking standard that allows a computer to be turned on or woken up by a network message. The message is usually sent by a program executed on another computer on the same network. (Similar standards and terms include Wake on WAN, Remote Wake-up, Power on by LAN, Power Up by LAN, Resume by LAN, Resume on LAN, Wake Up on LAN, etc.) WoL is implemented using a special network message called a magic packet. The magic packet contains the MAC address of the destination computer. The network interface on a listening computer waits for a magic packet addressed to it, and then initiates system wake up. WoL can be used within a service providing network to wake up servers when they are needed to provide demanded services.
However, because of the nested dependencies between servers, simply waking up an individual top level server to provide a service is not typically sufficient; any additional servers on which the top level server is dependent must also be woken up. Power consumption by a computer during power up/wake up is significantly greater than during normal operations, because hardware has greater power up needs (e.g., disks have higher spin up power consumption characteristics, etc.). Thus, sudden power consumption spikes and increased power load related issues are among the greater risks in facilitating WoL in a network. Using conventional WoL to wake up a collection of servers needed to provide a service risks creating power spikes and outages.
Apple's Bonjour service can use WoL to wake servers. However Bonjour requires that client computing devices requesting services have Bonjour compliant software, and be registered with the Bonjour service provider (an Apple AirPort or Apple Time Capsule base station). Only under those circumstances can the router issue a WoL packet when a service is requested. Thus, Bonjour works to allow, e.g., an Apple iPod registered with the base station to wake a desktop when it is going to access the desktop's copy of iTunes. However, it cannot be used to automatically allow any device to wake up a server without the device running special Bonjour software and preregistering. Furthermore, Bonjour does not provide any power profile management, and thus if a server being woken has nested dependencies, Bonjour will trigger a chain of WoL packets to be generated in quick succession to wake up the plurality of dependent servers. This can easily cause power consumption spikes and even blackouts.
It would be desirable to address these issues.